package control;

import java.util.Hashtable;

public class Ambito {
	
	public static Ambito actual;
	
	public Hashtable<String, Tipo> simbolos;
	public Hashtable<String, Tipo> tipos;
	public Ambito padre;
	
	
	public  Ambito(){
		padre = actual;
		actual = this;
		simbolos = new Hashtable<String, Tipo>();
		tipos = new Hashtable<String, Tipo>();
	}
	
	
	public static Ambito agregarAmbitoHijo(){
		Ambito a = new Ambito();
		return a;
	}
	
	public static boolean retornarAmbito(){
		if (actual!=null) {
			actual = actual.padre;
			return true;
		}
		return false;
	}
	
	public static boolean agregarSimbolo(String valor, Tipo tipo){
		if (actual.simbolos.get(valor)==null){
			actual.simbolos.put(valor, tipo);
			return true;
		}
		return false;
	}
	
	public static boolean agregarMetodo(String valor, Tipo tipo){
		if (Metodos.get(valor)==null){
			Metodos.put(valor, tipo);
			return true;
		}
		return false;
	}
	
	public static boolean agregarTipo(String nombre, Tipo tipo){
		if (actual.tipos.get(nombre)==null){
			actual.tipos.put(nombre,tipo);
			return true;
		}
		return false;
	}

	public static class Metodos{
		
		public static Hashtable<String, Tipo> metodos = new Hashtable<String, Tipo>();
		
		public static Tipo get(String llave){
			return metodos.get(llave);
		}
		
		public static Tipo put(String key, Tipo value){
			return metodos.put(key, value);
		}
	}
}
